package Thread;
// 线程的创建（4）

/**
 * 同第二种，实现Runnable接口并重写run方法
 */
public class demo4 {
    public static void main(String[] args) throws InterruptedException {
        Runnable runnable = new Runnable() {
            @Override
            public void run() {
                while(true) {
                    System.out.println("hello thread");
                    try{
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        throw new RuntimeException(e);
                    }
                }
            }
        };

        Thread t = new Thread(runnable);
        t.start();

        while(true) {
            System.out.println("hello main");
            Thread.sleep(1000);
        }
    }
}

/**
 * 通过继承Thread类和实现Runable接口来创建线程的区别：
 * 1.Java不支持多继承
 * 如果一个类继承了其他类，就无法通过继承Thread类实现多线程，但是实现Runnable接口就没有这个问题，因为Java支持一个类实现多个接口
 * 2.线程资源共享
 * 继承Thread类时，每个线程都拥有独立的Thread实例，因此线程资源（如线程名、优先级等）不能共享。
 * 而实现Runnable接口时，多个线程可以共享同一个Runnable实例，从而更容易实现线程之间的资源共享和通信。
 * 3.代码复用
 * 如果任务逻辑简单，并且不需要复用，那么直接继承Thread类比较方便，但是如果需要多个地方复用相同的线程逻辑，
 * 那么继承的方式不如实现Runnable灵活
 * 4.Runnable可以更好的解耦
 */



















